Installation serveur web

Installer nginx apache2 etc..

sudo apt-get install -y nginx apache2 libapache2-mod-wsgi libpq5

Installation des dépendances :

Attention :installer openjdk-7-jdk au lieu du openjdk-6-jdk

sudo apt-get update && sudo apt-get install python-dev postgresql libpq-dev python-pip python-virtualenv git-core solr-jetty openjdk-7-jdk libapache2-mod-rpaf 

Installer CKAN dans un environment virtuel Python

Creer le projet dans home

mkdir -p ~/ckan/lib
sudo ln -s ~/ckan/lib /usr/lib/ckan
mkdir -p ~/ckan/etc
sudo ln -s ~/ckan/etc /etc/ckan

Creer le virtual env

sudo mkdir -p /usr/lib/ckan/default
sudo chown `whoami` /usr/lib/ckan/default
virtualenv --no-site-packages /usr/lib/ckan/default

Activer le virtual env

. /usr/lib/ckan/default/bin/activate

Clone des sources

pip install -e 'git+https://github.com/ckan/ckan.git@ckan-2.5.2#egg=ckan'

Installer les packages python CKAN specifiques dans l'environnement virtuel

pip install -r /usr/lib/ckan/default/src/ckan/requirements.txt

Créer la base postgres

Créer un nouvel utilisateur

sudo -u postgres createuser -S -D -R -P ckan_default

mdp : ************

Créer la base ckan_default

sudo -u postgres createdb -O ckan_default ckan_default -E utf-8

Verrifier l'existance de la nouvelle base

sudo -u postgres psql -l

Create a CKAN config file

Creer le dossier contenant les fichiers de config du site

sudo mkdir -p /etc/ckan/default
sudo chown -R `whoami` /etc/ckan/

Créer le fichier ini (dev)

paster make-config ckan /etc/ckan/default/development.ini

modifier le fichier development.ini

sqlalchemy.url = postgresql://ckan_default:************@localhost/ckan_default

site_url=http://datasources.cartong.org/

Configurer Jetty pour Solr

sudo nano /etc/default/jetty8


NO_START=0            # (line 4)
JETTY_HOST=127.0.0.1  # (line 16)
JETTY_PORT=8983       # (line 19)
JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64/

Démarrer jetty

sudo /etc/init.d/jetty8 start

Verifier que tout va bien sur le site

wget http://localhost:8983

--2016-04-07 16:04:27--  http://localhost:8983/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8983... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1082 (1.1K) [text/html]
Saving to: ‘index.html’

index.html                            100%[==========================================================================>]   1.06K  --.-KB/s   in 0s

2016-04-07 16:04:27 (201 MB/s) - ‘index.html’ saved [1082/1082]

et sur Solr


wget http://localhost:8983/solr

--2016-04-07 16:05:57--  http://localhost:8983/solr
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8983... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://localhost:8983/solr/ [following]
--2016-04-07 16:05:57--  http://localhost:8983/solr/
Reusing existing connection to localhost:8983.
HTTP request sent, awaiting response... 200 OK
Length: 446 [text/html]
Saving to: ‘solr’

solr                                  100%[==========================================================================>]     446  --.-KB/s   in 0s

2016-04-07 16:05:58 (98.9 MB/s) - ‘solr’ saved [446/446]

Remplacer le schema.xml de solr par défaut par un lien symbolique vers les sources CKAN Replace the default schema.xml file with a symlink to the CKAN schema file included in the sources.

sudo mv /etc/solr/conf/schema.xml /etc/solr/conf/schema.xml.bak
sudo ln -s /usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml /etc/solr/conf/schema.xml

Link to who.ini

who.ini (the Repoze.who configuration file) needs to be accessible in the same directory as your CKAN config file, so create a symlink to it:

ln -s /usr/lib/ckan/default/src/ckan/who.ini /etc/ckan/default/who.ini

redermarer jetty8

sudo /etc/init.d/jetty8 restart

Terminer la config solr modifier dans development.ini du dossier ckan

solr_url=http://127.0.0.1:8983/solr

Initialier les tables de la db

cd /usr/lib/ckan/default/src/ckan
paster db init -c /etc/ckan/default/development.ini

Test du runserver

cd /usr/lib/ckan/default/src/ckan
paster serve /etc/ckan/default/development.ini

Deploiement en Production

cp /etc/ckan/default/development.ini /etc/ckan/default/production.ini

nano /etc/ckan/default/apache.wsgi
import os
activate_this = os.path.join('/usr/lib/ckan/default/bin/activate_this.py')
execfile(activate_this, dict(__file__=activate_this))

from paste.deploy import loadapp
config_filepath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'production.ini')
from paste.script.util.logging_config import fileConfig
fileConfig(config_filepath)
application = loadapp('config:%s' % config_filepath)

Installer le server mail

sudo apt-get install postfix
internet site
datasource.cartong.org

Configurer le serveur Web

Modifier le Apache config file : ckan_defaut

<VirtualHost 127.0.0.1:8080>
    ServerName datasources.cartong.org
    ServerAlias www.datasources.cartong.org
    WSGIScriptAlias / /etc/ckan/default/apache.wsgi

    # Pass authorization info on (needed for rest api).
    WSGIPassAuthorization On

    # Deploy as a daemon (avoids conflicts between CKAN instances).
    WSGIDaemonProcess ckan_default display-name=ckan_default processes=2 threads=15

    WSGIProcessGroup ckan_default

    ErrorLog /var/log/apache2/ckan_default.error.log
    CustomLog /var/log/apache2/ckan_default.custom.log combined

    <IfModule mod_rpaf.c>
        RPAFenable On
        RPAFsethostname On
        RPAFproxy_ips 127.0.0.1
    </IfModule>

    <Directory />
        Require all granted
    </Directory>

</VirtualHost>

Créer le fichier de config nginx

nano /etc/nginx/sites-available/ckan
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache:30m max_size=250m;
proxy_temp_path /tmp/nginx_proxy 1 2;

server {
    client_max_body_size 100M;
    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_cache cache;
        proxy_cache_bypass $cookie_auth_tkt;
        proxy_no_cache $cookie_auth_tkt;
        proxy_cache_valid 30m;
        proxy_cache_key $host$scheme$proxy_host$request_uri;
        # In emergency comment out line to force caching
        # proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
    }

}

Finir la confiuration des serveurs web nginx et apache2

sudo a2ensite ckan_default
sudo a2dissite 000-default
sudo rm -vi /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/ckan /etc/nginx/sites-enabled/ckan_default

Redemarer apache

sudo /etc/init.d/apache2 restart

Redemarer nginx

sudo /etc/init.d/nginx restart

Créer un super admin user sudatasource

. /usr/lib/ckan/default/bin/activate
cd /usr/lib/ckan/default/src/ckan
paster sysadmin add sudatasource -c /etc/ckan/default/production.ini

Base de donnée

Installer l'extention Postgis

sudo apt-get install postgresql-9.4-postgis

Créer les fonctions et les tables spatialref

sudo -u postgres psql -d ckan_default -f /usr/share/postgresql/9.4/contrib/postgis-2.1/postgis.sql
sudo -u postgres psql -d ckan_default -f /usr/share/postgresql/9.4/contrib/postgis-2.1/spatial_ref_sys.sql

Changer le proprietaire des tables

sudo -u postgres psql -d ckan_default -c 'ALTER VIEW geometry_columns OWNER TO ckan_default;'
sudo -u postgres psql -d ckan_default -c 'ALTER TABLE spatial_ref_sys OWNER TO ckan_default;'

Verification

sudo -u postgres psql -d ckan_default -c "SELECT postgis_full_version()"
installer d'autre package / dépendance pour la gestion spatial
sudo apt-get install python-dev libxml2-dev libxslt1-dev libgeos-c1

Doc développeurs

Pour faire des corrections ou des évolutions sur l'application CKAN on travail avec Git en effectuant des Pull / Push.

Poste de dev >> github >> serveur cartong

Si plusieur Dev, avant chaque push on pull.

Sur le serveur on ne fait que du status, fetch and Pull !

Repertoire git sur le serveur

les sources de CKAN et EXTENTIONS sont installées ici :

/usr/lib/ckan/default/src/

troubleshouting

OSError: [Errno 13] Permission denied: '/tmp/default/sessions/container_file_lock/a'

Ajouter cartong au groupe www-data

sudo usermod -a -G www-data cartong